The awkwardness in the coding of the Java solution given on the main problem page is the repetition of the terminiation condition: we specify both a (trivial) condition for the Enumerator and a condition for exiting the loop of the main program body. In fact, only the latter is nontrivial, and we can simplify the program by moving it into the enumerator itself. This alternate strategy seems more in keeping with the idea of an enumerator, which should ``know'' when it has no more input to give.
Why did we present the program in its original form? We wanted all of the aspects of the code which might reasonably vary from application to application to be a small area. The change from one style to the other is clearly superficial, and both are nicely abstracted by the techniques of the Pizza solution.